Compiler ক্লাস java.lang প্যাকেজের অংশ নয়, তবে Java 8 এর পরে Java Compiler API এর অধীনে javax.tools প্যাকেজে অন্তর্ভুক্ত হয়েছে। এটি মূলত Java-এ কোড কম্পাইল করার জন্য ব্যবহৃত একটি ক্লাস।
Compiler ক্লাস এবং JavaCompiler API মূলত Java source কোডকে bytecode এ কম্পাইল করার জন্য ব্যবহৃত হয়, যাতে সেই কোড Java Virtual Machine (JVM) তে চালানো যেতে পারে।
Compiler ক্লাসের মাধ্যমে Java কোডের কম্পাইলেশন প্রক্রিয়া প্রোগ্রামmatically পরিচালনা করা সম্ভব হয়। সাধারণত, এটি javac কমান্ডের অনুরূপ কাজ করে, তবে কোড কম্পাইল করা এবং তার আউটপুট হ্যান্ডলিং প্রোগ্রাম থেকে সরাসরি করা হয়।
Compiler ক্লাসের ভূমিকা:
Compiler ক্লাসটি JavaCompiler ইন্টারফেসের মাধ্যমে Java source কোডকে কম্পাইল করতে ব্যবহৃত হয়। এই API কে ব্যবহার করে আপনি Java source কোড কম্পাইল করতে পারেন এবং সেই কম্পাইল করা কোডের আউটপুট প্রোগ্রামmatically পরিচালনা করতে পারেন।
Compiler ক্লাসের মাধ্যমে Java source কোড কম্পাইল করার মূল কাজগুলো হল:
- Source code compiling: Java source কোডকে bytecode তে রূপান্তরিত করা।
- Programmatically access: কোড কম্পাইল করতে
javacকমান্ডের পরিবর্তে প্রোগ্রামmatically API ব্যবহার করা। - Compiler Diagnostics: কম্পাইলেশন সংক্রান্ত ত্রুটির তথ্য নেওয়া।
Java Compiler API (javax.tools)
Java 6 এর পর থেকে Java তে javax.tools প্যাকেজে JavaCompiler ক্লাস এবং অন্যান্য tools সরবরাহ করা হয়, যার মাধ্যমে আপনি কোড কম্পাইল করতে পারেন।
JavaCompiler Interface
- JavaCompiler ইন্টারফেসটি Java source কোডকে কম্পাইল করার জন্য ব্যবহৃত হয়। এটি
getCompiler()মেথডের মাধ্যমে অ্যাক্সেস করা যায়।
Compiler API ব্যবহার করার উদাহরণ
এখানে একটি উদাহরণ দেওয়া হলো, যেখানে JavaCompiler ব্যবহার করে একটি Java source কোডকে কম্পাইল করা হচ্ছে:
import javax.tools.*;
import java.io.*;
import java.util.*;
public class JavaCompilerExample {
public static void main(String[] args) {
// Create a new instance of JavaCompiler
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
// Define the source file and output directory
String sourceFile = "MyClass.java";
String outputDir = "output/";
// Define the compilation options
List<String> options = new ArrayList<>();
options.add("-d");
options.add(outputDir);
// Create a file manager
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
// Get the file to compile
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromStrings(Arrays.asList(sourceFile));
// Compile the source file
boolean result = compiler.getTask(null, fileManager, null, options, null, compilationUnits).call();
if (result) {
System.out.println("Compilation successful!");
} else {
System.out.println("Compilation failed.");
}
}
}
ব্যাখ্যা:
- JavaCompiler instance:
ToolProvider.getSystemJavaCompiler()মেথডের মাধ্যমেJavaCompilerক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে। - Source file and options:
sourceFileহল কম্পাইল করার জন্য দেওয়া Java source ফাইল এবংoptions-এ কম্পাইলারকে নির্দেশনা দেওয়া হয় (যেমন আউটপুট ডিরেক্টরি-dঅপশন দিয়ে). - StandardJavaFileManager: এটি ফাইল ম্যানেজার, যা ফাইল সঠিকভাবে পরিচালনা করার জন্য ব্যবহৃত হয়।
- Compilation:
compiler.getTask()মেথড ব্যবহার করে কোড কম্পাইল করা হয় এবং তারপরcall()মেথডটি ফলস বা ট্রু রিটার্ন করে।
Compiler Class থেকে Features:
- Compilation: Java source কোডকে bytecode-এ রূপান্তরিত করা।
- Error Handling: ত্রুটির বার্তা প্রদান এবং ত্রুটি সনাক্ত করা।
- Programmatic Access: কম্পাইলারকে কোডের মধ্যে সংহত করে programmatically কোড কম্পাইল করা সম্ভব।
Java তে Compiler এবং JavaCompiler API মূলত প্রোগ্রামmatically Java source কোড কম্পাইল করার জন্য ব্যবহৃত হয়। এটি সাধারণত javac কমান্ডের মাধ্যমে কাজ করে, তবে আপনি আপনার Java প্রোগ্রাম থেকে সরাসরি কোড কম্পাইল করতে পারেন। এটি স্বয়ংক্রিয় কোড কম্পাইলেশন প্রক্রিয়া এবং এর সাথে সম্পর্কিত ত্রুটির হ্যান্ডলিং সহজ করে তোলে। JavaCompiler ক্লাস এবং ToolProvider.getSystemJavaCompiler() এর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশন থেকে Java source কোড কম্পাইল করতে পারবেন।
Read more